home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
CUGUK
/
PC_LIBS
/
C043.ZIP
/
BGIDRV.ARC
/
DEVICE.INC
< prev
next >
Wrap
Text File
|
1989-05-31
|
6KB
|
207 lines
; ************************************************************************
; File: Device.inc
;
; Copyright (c) 1988,1989 Borland International, Inc.
;
; Purpose: define all the strucs/macros for the BGI interface
;
; Last Update: 9/30/88
;
; Updates:
;
; ************************************************************************
callBGI macro p
ifndef BGI_add ; long call device driver ovr
extrn BGI_add:dword ; though pointer to driver
endif
mov si,$&p ; (si) is the function code
call dword ptr BGI_add
endm
BGIstat macro p ; get es:<si> --> ddo status
ifndef stable
extrn stable:dword
endif
les si,cs:dword ptr stable ; get location of status to si
add si,$&p ; offset to correct location
endm
; **********************************************************************
; The following macro builds the required BGI header block
BGI macro name ; the following macro builds
public name ; the required ddo header block
name proc far ; the vector table must be at
; 'ddovec' if vector not speced
push ds ; (push ds, push cs are signature)
push cs ; make ds=cs
pop ds
cld ; just in case
push bp ; 6 bytes
call [DDOVEC+si] ; call the local function
pop bp
pop ds ; restore
ret ; far
name endp
db 'CB' ; just for fun
dw ?
EMULATE:ret ; emulate function (nop until
dw 0,0 ; patched by loader)
RESERVED:
NONE: ret ; near ret for unused functions
endm
; ************** the device driver vector table definition **************
$ddo struc
$install dw ? ; install device.
; required to return es:<bx> to status table.
$init dw ? ; (bh)=texture (bl)= background color to use.
; ready device for output.
; es:[di] --> rotate,xclip1,yclip1,xclip2,yclip2
$clear dw ? ; clear graphics device and ready it for
; output.
$post dw ? ; make picture visible. used for making
; printer bitmaps visible, for unloading
; the plotter pen, or for restoring screen.
$move dw ? ; used by text, arc, symbol, draw, fill etc.
; set c.p. (ax,bx) = (x,y)
$draw dw ? ; draw to (ax,bx) = (x,y)
$vect dw ? ; (ax,bx,cx,dx) = x0,y0,x1,y1
$poly dw ? ; draw polygon.
; ax=0 start new polygon definition
; ax=1 close and trace poly
; ax=2 close, fill poly and trace
; ax=3 close and fill poly
; ax=4 draw points and don't capture
; ax=5 turn off polygon capture
; ax=6 draw polygon at es:[bx] and (cx) points
; ax=7 fill & trace polygon at es:[bx] with (cx) points
; ax=8 fill polygon at es:[bx] with (cx) points
$dbar dw ? ; bar fill (cpx,cpy,ax,bx)=x0,y0,x1,y1
; (bx,cx)=dx,dy for 3d (with outline)
$patbar dw ? ; pattern bar (no outline)
$darc dw ? ; draw arc
$piesl dw ? ; (ax,bx)= start ang, end ang
; (cx,dx)= x radius, y radius
; center is a cp. (with outline)
$fellipse dw ? ; (ab,bx) = x radius, yradius
; (no outline)
$palette dw ? ; load a palette entry
; (ax)=entry # (bx)=value
; if (ax)=-1 set background
$allpalette dw ? ; load the full palette
; es:[bx] --> palette array
$color dw ? ; set active draw color & pattern fill color
; (al)= draw (trace) color (ah)=fill color
$fstyle dw ? ; (al)=fill pattern #
; (al)=0 no fill, 1 solid ...
; (ah)=background color (normally 0)
; (used only if pattern in al > 80h)
; if (al)=ff es:<bx>--> pattern definition
$lstyle dw ? ; (al)=0(solid) 1(dotted) 2(centerline) 3(dash)
; 4(use pattern) (bx)=bit pattern
; (cx)=line width (normally one)
$tstyle dw ? ; (al)=font (ah)=style
; (bx)=x charsize (cx)=y charsize
; if (al)=ff es:<bx>--> font definition table
; changes all params to those available.
$text dw ? ; draw text. es:<bx> --> <string>, (0)
$textsize dw ? ; text length.
$textinfo dw ? ; extended text settings.
$flood dw ? ; floodfill (ax,bx) = x,y seed coordinate.
$getpix dw ? ; read pixel @(ax,bx) to (dl)
$putpix dw ? ; put (dl) to pixel @(ax,bx)
$bitmaputil dw ? ; returns (es:[bx]) = bitmap utilities.
; dw gotographic
; dw exitgraphic
; dw putpix
; dw getpix
; dw pixelsperbyte
; dw setwritemode
$savebitmap dw ? ; es:[bx]--> buffer to save bitmap to.
; contain bitmap size (pixels) in 1st 2 words
; cx = start x dx = start line # y
$restorebitmap dw ? ; es:[bx]--> bitmap buffer to restore.
; contains bitmap size (pixels) in 1st 2 words
; cx=start x dx= start y to put
; (al) = bitblt op (copy, xor, comp, etc.)
$setclip dw ? ; extended function to set clip window
; (ax,bx)-(cx,dx) = clip rectangle
$query_color dw ? ; extended function for color information
$escape dw ? ; escape function for direct i/o
$symbol dw ? ; draw symbol (al) = symbol #
; if (al)=ff es:<bx>--> symbol definition
$reserve dw ? ; 32 reserved entry points
$user dw ? ; User available entry points
$ddo ends
; ************** the device driver status table definition **************
$status struc
$stat db 0 ; 0 = no errors
$devtyp db 0 ; device type 0=screen 1=printer 2=plotter
$xres dw 639 ; full resolution
$yres dw 199
$xefres dw 639 ; effective resolution
$yefres dw 199
$xinch dw 9000 ; device size in inches*1000
$yinch dw 7000
$aspec dw 21200 ; aspect ratio
$chsiz dw 808h ; standard char size x,y (points)
$coltbl dw 9090h ; color tables
$status ends
; **********************************************************************
; this struc defines the info struc returned from the
; bgi bitmaputil function call @(es:[bx])
$bitmapinfo struc
$gotographic dw ?
$exitgraphic dw ?
$putpixel dw ?
$getpixel dw ?
$bitsperpixel dw ?
$setpage dw ? ; draw page in (al)
$setvisual dw ? ; visual display page (al)
$setwritemode dw ? ; set write mode (al)
$bitmapinfo ends